Narrative: 
In order to generate a PDDL predicate expression
As a software component
I want to generate compliant PDDL predicates expression from domain objects' states

Scenario: One object, a robot
Given a robot rob
And I register all these objects
When I ask for the predicates
Then the resulting expression list contains ':PREDICATES'
And the resulting expression list contains '(AT ?ROBOT - ROBOT ?LOCATION0 - LOCATION)'
And the resulting expression list contains '(UNLOADED ?ROBOT - ROBOT)'
And the resulting expression list contains '(LOADED ?ROBOT - ROBOT ?BOX0 - BOX)'

Scenario: Two objects, a location and a pile
Given a location loc1
And a pile pile1 with number 1 in loc1
And I register all these objects
When I ask for the predicates
Then the resulting expression list contains ':PREDICATES'
And the resulting expression list contains '(ADJACENT ?LOCATION - LOCATION ?LOCATION0 - LOCATION)'
And the resulting expression list contains '(OCCUPIED ?LOCATION - LOCATION)'
And the resulting expression list contains '(ATTACHED ?PILE - PILE ?LOCATION0 - LOCATION)'

Scenario: No objects
When I ask for the predicates
Then I get an empty expression